Do not iterate recursively over all child nodes.
authorJohan Dahlin <jdahlin@async.com.br>
Tue, 4 Sep 2007 12:19:37 +0000 (12:19 +0000)
committerJohan Dahlin <johan@src.gnome.org>
Tue, 4 Sep 2007 12:19:37 +0000 (12:19 +0000)
2007-09-04  Johan Dahlin  <jdahlin@async.com.br>

    * gtk/gtk-builder-convert (GtkBuilder._packing_prop_to_child_attr):
    Do not iterate recursively over all child nodes.
    (GtkBuilderConverter._default_widget_converter): Use a more efficient
    way of iterating over all property nodes
    #472974 (Carlos Garnacho)

svn path=/trunk/; revision=18721

ChangeLog
gtk/gtk-builder-convert

index db9fb73547b2988a70c5603446465c26a19a5bd3..946baf01d3edcc8f58b940f6adcd2a5aa2a404b3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,12 @@
        empty properties, since we do not know the default GParamSpec values.
        #472981 (Carlos Garnacho)
 
+       * gtk/gtk-builder-convert (GtkBuilder._packing_prop_to_child_attr):
+       Do not iterate recursively over all child nodes.
+       (GtkBuilderConverter._default_widget_converter): Use a more efficient
+       way of iterating over all property nodes
+       #472974 (Carlos Garnacho)
+
 2007-09-03  Emmanuele Bassi  <ebassi@gnome.org>
 
        * gtk/gtkrecentmanager.c
index f5721c39da5c7cb1cd6ba5b49212e2fe8276c78c..fd87ed67fc810803f33b7126bfbba54307b9b730 100755 (executable)
@@ -92,6 +92,16 @@ def get_signal_nodes(node):
             signals.append(child)
     return signals
 
+def get_property_nodes(node):
+    assert node.tagName == 'object'
+    properties = []
+    for child in node.childNodes:
+        if child.nodeType == Node.TEXT_NODE:
+            continue
+        if child.tagName == 'property':
+            properties.append(child)
+    return properties
+
 def get_accelerator_nodes(node):
     assert node.tagName == 'object'
     accelerators = []
@@ -240,9 +250,7 @@ class GtkBuilderConverter(object):
 
     def _default_widget_converter(self, node):
         klass = node.getAttribute("class")
-        for prop in node.getElementsByTagName("property"):
-            if prop.parentNode is not node:
-                continue
+        for prop in get_property_nodes(node):
             prop_name = prop.getAttribute("name")
             if prop_name == "sizegroup":
                 self._convert_sizegroup(node, prop)
@@ -560,7 +568,7 @@ class GtkBuilderConverter(object):
 
     def _packing_prop_to_child_attr(self, node, prop_name, prop_val,
                                    attr_val=None):
-        for child in node.getElementsByTagName("child"):
+        for child in get_child_nodes(node):
             packing_props = [p for p in child.childNodes if p.nodeName == "packing"]
             if not packing_props:
                 continue